package Map集合.Map集合的概述;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class Test {
    public static void main(String[] args) {
        // 目标: 认识Map集合
        // 1. Map集合称为双列集合, 格式: {key1 = value1, key2 = value2, ...}, 一次需要存一对数据作为一个元素
        // 2. Map集合的每个元素 "key(键) = value(值)" 称为一个键值对/键值对对象/一个Entry对象, Map集合也被叫做 "键值对集合"
        // 3. Map集合的所有键是不允许重复的, 但值可以重复, 键和值是一一对应的, 每一个键只能找到自己对应的值

        // 什么业务情况下使用Map集合
        // 数据一一对应时,(也就是需要储存一一对应数据时, 即可使用Map集合)

        // Map集合体系的特点
        // 注意: Map系列集合的特点都是由键决定的, 值只是一个附属品, 值是不做要求的

        // HashMap(由键决定特点) : 无序、不重复、无索引; (Map系列集合里用的最多)
        Map<String, Integer> map = new HashMap<>(); // 这是一句经典代码. 常用!
        map.put("手表", 100);
        map.put("手表", 220); // 后面重复的数据会覆盖前面的数据
        map.put("手机", 2);
        map.put("Java", 2);
        map.put(null, null);
        System.out.println(map);

        // LinkedHashMap (由键决定特点) : 有序、不重复、无索引.
        Map<String, Integer> map1 = new LinkedHashMap<>(); // 同样由HashMap会覆盖的问题

        // TreeMap (由键决定特点) : 按照大小默认升序排序、不重复、无索引.
        Map<String, Integer> map2 = new TreeMap<>(); // 键要是数值, 不然比不了, 非要比就要用到比较器
    }
}
